{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "view-in-github"
   },
   "source": [
    "<a href=\"https://colab.research.google.com/github/peremartra/Large-Language-Model-Notebooks-Course/blob/main/3-LangChain/3_4b_Medical_Assistant_Agent_Gradio.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "f3cvnSVemTSU"
   },
   "source": [
    "<div>\n",
    "    <h1>Large Language Models Projects</a></h1>\n",
    "    <h3>Apply and Implement Strategies for Large Language Models</h3>\n",
    "    <h2>3.4b-Create a Medical Assistant RAG System chat with LangChain, ChromaDB & Gradio</h2>\n",
    "</div>\n",
    "\n",
    "by [Pere Martra](https://www.linkedin.com/in/pere-martra/)\n",
    "\n",
    "_______\n",
    "Models: OpenAI.\n",
    "\n",
    "Colab Environment: CPU.\n",
    "\n",
    "Keys:\n",
    "* RAG\n",
    "* ChromaDB\n",
    "* Embeddings\n",
    "* OpenAI\n",
    "* Gradio\n",
    "* LangChain\n",
    "_______\n",
    "This is the unofficial repository for the book:\n",
    "        <a href=\"https://amzn.to/4eanT1g\"> <b>Large Language Models:</b> Apply and Implement Strategies for Large Language Models</a> (Apress).\n",
    "        The book is based on the content of this repository, but the notebooks are being updated, and I am incorporating new examples and chapters.\n",
    "        If you are looking for the official repository for the book, with the original notebooks, you should visit the\n",
    "        <a href=\"https://github.com/Apress/Large-Language-Models-Projects\">Apress repository</a>, where you can find all the notebooks in their original format as they appear in the book."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "KNW-LniD2I2o"
   },
   "source": [
    "#Installing libraries & Loading Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "pva9ehKXUpU2",
    "outputId": "e9323239-3e39-49ff-ac37-913d9c41490e"
   },
   "outputs": [],
   "source": [
    "!pip install -q langchain==0.3.0\n",
    "!pip install -q langchain-openai==0.2.0\n",
    "!pip install -q langchainhub==0.1.21\n",
    "!pip install -q datasets==3.0.0\n",
    "!pip install -q chromadb==0.5.5\n",
    "!pip install -q gradio==4.44.0\n",
    "!pip install -q langchain-community==0.3.0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "KEwdHiGFkK_S"
   },
   "source": [
    "We will download the dataset from the Hugging Face datasets library. It's a dataset with information about diseases."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 113,
     "referenced_widgets": [
      "0e892018d49b4e18a5474abe09be2e62",
      "a419f5b825064c499d4f48866b6d7a74",
      "07ee263153a24adaa68cd214eadf6beb",
      "e83f5646ee18468fb8cfaac3049500e2",
      "b9f054b48512485cb2a599b9ef8a6e4c",
      "88552f9ee089447b9d10a9fedd31dc34",
      "c056ba41424c49d9beb4e728729be017",
      "4e2adc0ebac2499caede53f18a089e8d",
      "a253d1e721784478b44bc9591e91edc3",
      "87c2e9430afb4aba8c85ea659aad7b7d",
      "0b99c723f1c144ef98d7d00161cc6b14",
      "1e63095f73304dd99fc3abdf1c783df6",
      "7a833fd4eab84e78b422954197b11e67",
      "ec02b4f54c4e4102a9580492308e6adf",
      "22ec15c6ee5a48cb9cbaacee3418a02a",
      "48897a06b5034af1bb4d6285e44dc3cc",
      "16ecb9b094604e18ae12485ab3051c86",
      "1b2b2dd98a694302bbabae7c2cc806d0",
      "428db91b6aad45cbb45448592d182dcd",
      "f84a284faa8b405c958703f677987bfd",
      "3cd31eee5ddb48c8b877fbed00b3a59f",
      "6a0123f3d86f49be929bee74324606b3",
      "8b0b16feb4374555b9c447b8f7c925cc",
      "89b75ba9601b47eeaf93bd770a1d1fb3",
      "a69fb7e458f1411696999a4ab8422aea",
      "00fe0639db3e4cceab51b66bff5badb6",
      "44b02469b2e14793a3b04a601a98f15b",
      "3be999c8901f48e29e1048b287dc47a6",
      "325a63fbc01d4eca8b7d244d73ad6781",
      "16c884025d5446be9520be255057e9ba",
      "e732a5712cf846248e3383865b46c44c",
      "70771d3007f84b708f2b6c606191544e",
      "c892e726805a42339efa33697bc5bd7c"
     ]
    },
    "id": "laSDMjqQXuj-",
    "outputId": "1fd1266c-8e78-480d-b2f3-fd9d7740a17c"
   },
   "outputs": [],
   "source": [
    "from datasets import load_dataset\n",
    "\n",
    "data = load_dataset(\"keivalya/MedQuad-MedicalQnADataset\", split='train')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 363
    },
    "id": "JnWZTcJiXzor",
    "outputId": "c4093f9e-b204-44e3-e3fc-ebe4d28abfc9"
   },
   "outputs": [],
   "source": [
    "data = data.to_pandas()\n",
    "data.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "hf7RQa6B5xpx"
   },
   "outputs": [],
   "source": [
    "#uncoment this line if you want to limit the size of the data.\n",
    "data = data[0:100]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "4FhUslovtiqn"
   },
   "source": [
    "As you can see, the medical information in the dataset is well-organized, and to someone like me, who is not an expert in the field, it appears to be quite valuable. This information could be a useful addition to any general medicine book to support primary care doctors."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "2sLkrHF6lWhM"
   },
   "source": [
    "Load the langchain libraries to load the document."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "cCBAlIb596wZ"
   },
   "outputs": [],
   "source": [
    "from langchain.document_loaders import DataFrameLoader\n",
    "from langchain.vectorstores import Chroma"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "nGCkVX6xldOR"
   },
   "source": [
    "The Document is in the Answer column, and the others columns are Metadata."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "JZX8SaTe99Uf"
   },
   "outputs": [],
   "source": [
    "df_loader = DataFrameLoader(data, page_content_column=\"Answer\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 572
    },
    "id": "HDWnTqRY-IDr",
    "outputId": "55d907c1-f271-41a1-d37f-408a85cc8d65"
   },
   "outputs": [],
   "source": [
    "df_document = df_loader.load()\n",
    "display(df_document[:2])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "zPuTbSsXl3uF"
   },
   "source": [
    "We can chunk the documents. The size to which we want to split the document is a design decision. The larger it is, the larger the prompt will be, and the slower the Model's response process.\n",
    "\n",
    "We also need to consider the maximum prompt size and ensure that the document does not exceed it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "8wogWV1_-lxh"
   },
   "outputs": [],
   "source": [
    "from langchain.text_splitter import CharacterTextSplitter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "kg7SRkqO-f9x"
   },
   "outputs": [],
   "source": [
    "text_splitter = CharacterTextSplitter(chunk_size=1250,\n",
    "                                      separator=\"\\n\",\n",
    "                                      chunk_overlap=100)\n",
    "texts = text_splitter.split_documents(df_document)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "y0dn9EfrKoeW"
   },
   "source": [
    "These warnings we see are because it can't perform the partition of the required size. This is because it waits for a page break to divide the text and does so when possible."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "XaLWV_TzASSB",
    "outputId": "bef4b3bf-ef23-4857-b3bc-1a455e7575a2"
   },
   "outputs": [],
   "source": [
    "first_doc = texts[1]\n",
    "print(first_doc.page_content)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "B2_Pt7N6Zg2X"
   },
   "source": [
    "# Initialize the Embedding Model and Vector DB"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "n8ROb8oMnRLD"
   },
   "source": [
    "We load the text-embedding-ada-002 model from OpenAI."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "F_Dn06xGwjKP",
    "outputId": "5dbd09fd-4821-4023-b0df-b20dbc42822b"
   },
   "outputs": [],
   "source": [
    "from getpass import getpass\n",
    "OPENAI_API_KEY = getpass(\"OpenAI API Key: \")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "U57x2_87YSpb"
   },
   "outputs": [],
   "source": [
    "from langchain_openai import OpenAIEmbeddings\n",
    "\n",
    "model_name = 'text-embedding-ada-002'\n",
    "\n",
    "embed = OpenAIEmbeddings(\n",
    "    model=model_name,\n",
    "    openai_api_key=OPENAI_API_KEY\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "cgTCwF7UMyNW"
   },
   "source": [
    "The execution of this cell may take 3 to 5 minutes. If you want it to be faster, you can reduce the number of records in the dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "SEhQMQ8eCMj8"
   },
   "outputs": [],
   "source": [
    "directory_cdb = '/content/drive/MyDrive/chromadb'\n",
    "chroma_db = Chroma.from_documents(\n",
    "    df_document, embed, persist_directory=directory_cdb\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "KhjV-T8GoarF"
   },
   "source": [
    "We are going to create three objects.\n",
    "\n",
    "* The language model, which can be any of those from OpenAI.\n",
    "* The memory, responsible for keeping the prompt with all the necessary history.\n",
    "* The retrieval, used to obtain information stored in ChromaDB."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "zMRs9Klic5-Y"
   },
   "outputs": [],
   "source": [
    "from langchain.chat_models import ChatOpenAI\n",
    "from langchain_openai import OpenAI\n",
    "from langchain.chains.conversation.memory import ConversationBufferWindowMemory\n",
    "from langchain.chains import RetrievalQA\n",
    "\n",
    "llm=OpenAI(openai_api_key=OPENAI_API_KEY,\n",
    "           temperature=0.0)\n",
    "\n",
    "conversational_memory = ConversationBufferWindowMemory(\n",
    "    memory_key='chat_history',\n",
    "    k=4, #Number of messages stored in memory\n",
    "    return_messages=True #Must return the messages in the response.\n",
    ")\n",
    "\n",
    "qa = RetrievalQA.from_chain_type(\n",
    "    llm=llm,\n",
    "    chain_type=\"stuff\",\n",
    "    retriever=chroma_db.as_retriever()\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ergrieE4o8qu"
   },
   "source": [
    "We can try the isolated Retrieval to see if the information it returns is relevant.\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "LaYSq0V-dxHw",
    "outputId": "6fa7ad0e-6079-40c6-bb54-22b3774db035"
   },
   "outputs": [],
   "source": [
    "qa.invoke(\"What is the main symptom of LCM?\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "pf9MXPeipEBO"
   },
   "source": [
    "Perfect! The information returned is exactly what we desired.\n",
    "\n",
    "# Creating the Agent."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "FwCYrS4duqBW"
   },
   "outputs": [],
   "source": [
    "from langchain.agents import Tool\n",
    "\n",
    "#Defining the list of tool objects to be used by LangChain.\n",
    "tools = [\n",
    "    Tool(\n",
    "        name='Medical KB',\n",
    "        func=qa.invoke,\n",
    "        description=(\n",
    "            \"\"\"use this tool when answering medical knowledge queries to get\n",
    "            more information about the topic\"\"\"\n",
    "        )\n",
    "    )\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "JaKTzPUEvOoy",
    "outputId": "3109bb27-8674-4233-a480-4dd6d0492f08"
   },
   "outputs": [],
   "source": [
    "from langchain.agents import create_react_agent\n",
    "from langchain import hub\n",
    "\n",
    "prompt = hub.pull(\"hwchase17/react-chat\")\n",
    "agent = create_react_agent(\n",
    "    tools=tools,\n",
    "    llm=llm,\n",
    "    prompt=prompt,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "5sjTL1EU1vNW"
   },
   "outputs": [],
   "source": [
    "# Create an agent executor by passing in the agent and tools\n",
    "from langchain.agents import AgentExecutor\n",
    "agent_executor = AgentExecutor(agent=agent,\n",
    "                               tools=tools,\n",
    "                               verbose=True,\n",
    "                               memory=conversational_memory,\n",
    "                               max_iterations=30,\n",
    "                               max_execution_time=600,\n",
    "                               handle_parsing_errors=True\n",
    "                               )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "IlxUBWKcvzeP"
   },
   "source": [
    "## Using the Conversational Agent"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ZZapCP4Pv2kz"
   },
   "source": [
    "To make queries we simply call the `agent` directly.\n",
    "\n",
    "First i will try a order not related to the Medical field."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "85vipqC02deV",
    "outputId": "8e99a2c8-2d96-4a59-c097-d1662b97c28e"
   },
   "outputs": [],
   "source": [
    "agent_executor.invoke({\"input\": \"Give me the area of square of 2x2\"})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8suStMR7G11e"
   },
   "source": [
    "Perfect, the model has responded without accessing the configured knowledge database.\n",
    "\n",
    "Now I will try with a question that is also not related to health."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "9YEsxEuCVgMv",
    "outputId": "0db0fc58-6670-4b97-ccc1-883898624ae6"
   },
   "outputs": [],
   "source": [
    "agent_executor.invoke({\"input\": \"Do you know who is Clark Kent?\"})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "lyd0XJ3CHjVb"
   },
   "source": [
    "It has not accessed either, as the model has been able to identify that it is not a question related to the database that LangChain provides.\n",
    "\n",
    "Now it's time to try with a question related to Medicine. Let's see if the model can understand that it should first look for information in the vector database at its disposal."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "Wtwgfuy158LV"
   },
   "outputs": [],
   "source": [
    " agent_executor.memory.clear()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "RJoAhy76vzAB",
    "outputId": "25524636-e117-4346-adc5-b421dde42c76"
   },
   "outputs": [],
   "source": [
    "agent_executor.invoke({\"input\": \"\"\"I have a patient that can have Botulism,\n",
    "how can I confirm the diagnosis?\"\"\"})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8lsaoF8nJNnR"
   },
   "source": [
    "Perfect, the most important thing for us is that it has been able to identify that it should go to the medical database to search for information about the symptoms."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "mQeicHTj2pmY",
    "outputId": "031be70d-2774-4fbb-e302-9671952cc681"
   },
   "outputs": [],
   "source": [
    "response = agent_executor.invoke({\"input\": \"Is this an important illness?\"})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 52
    },
    "id": "X-SvjxqcxCod",
    "outputId": "7682e7bc-a0c8-46cf-875c-ecef61517f97"
   },
   "outputs": [],
   "source": [
    "response['output']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "d9ZQoP7kkMA4"
   },
   "source": [
    "#Adding Gradio Interface\n",
    "We are going to create an Interface with Gradio that can work with a LangChain Agent.\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "5M0B94JvUTU5"
   },
   "outputs": [],
   "source": [
    "#import gradio library.\n",
    "import gradio as gr\n",
    "#history = \"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "wl0OQIXBkjEn"
   },
   "outputs": [],
   "source": [
    "# Define the function for the conversation\n",
    "def continue_conversation(input, history):\n",
    "    # Invoke the agent and get the response\n",
    "    response = agent_executor.invoke({\"input\": input})\n",
    "    output = response['output']\n",
    "\n",
    "    # Append the new input and output to the history\n",
    "    history.append(f\"Doctor: {input}\")\n",
    "    history.append(f\"AI Assistant: {output}\")\n",
    "\n",
    "    # Join the history into a single string\n",
    "    history_text = \"\\n\".join(history)\n",
    "\n",
    "    # Return the current response and the full history (hidden state)\n",
    "    return output, history_text, history"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "D6Hjjtyc0S_1"
   },
   "outputs": [],
   "source": [
    "#Function call by the clear button to clear the Input textBox.\n",
    "def clear_input():\n",
    "    return \"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "v44UH-DqstBv"
   },
   "outputs": [],
   "source": [
    "# Create the Gradio interface\n",
    "with gr.Blocks() as demo:\n",
    "  with gr.Row():\n",
    "    #We use two columns to organize the Gradio Elements.\n",
    "    with gr.Column():\n",
    "      # Input textbox\n",
    "      input_textbox = gr.Textbox(lines=5, placeholder=\"Type your prompt here...\")\n",
    "      # Conversation history state\n",
    "      history_state = gr.State([])\n",
    "\n",
    "      # Outputs\n",
    "      current_response = gr.Textbox(label=\"Current Response\")\n",
    "      conversation_history = gr.Textbox(label=\"Conversation History\", lines=10)\n",
    "    with gr.Column():\n",
    "    # Buttons\n",
    "      send_button = gr.Button(\"Send\")\n",
    "      clear_button = gr.Button(\"Clear Input\")\n",
    "\n",
    "      # Bind the send button to submit the input\n",
    "      send_button.click(\n",
    "          fn=continue_conversation,\n",
    "          inputs=[input_textbox, history_state],\n",
    "          outputs=[current_response, conversation_history, history_state]\n",
    "      )\n",
    "\n",
    "      # Bind the clear button to clear the input\n",
    "      clear_button.click(fn=clear_input, inputs=[], outputs=[input_textbox])\n",
    "\n",
    "      # Alternatively, pressing \"Enter\" in the input box will also submit\n",
    "      input_textbox.submit(\n",
    "          fn=continue_conversation,\n",
    "          inputs=[input_textbox, history_state],\n",
    "          outputs=[current_response, conversation_history, history_state]\n",
    "      )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "id": "ohtIpcQbVP_w",
    "outputId": "ff10de05-1f2f-4c81-dadb-11de49d0e9ef"
   },
   "outputs": [],
   "source": [
    "demo.launch(debug=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "gdyhyd6nJnwN"
   },
   "source": [
    "Everything works perfectly, we have an Agent with Memory. We can maintain a conversation, using the Gradio Interface, taking into account that the model knows the previous questions and answers.\n",
    "\n",
    "# Conclusions.\n",
    "The experiment has been a small success. The Vectorial database has been configured and filled with information from the dataset. A LangChain agent has been created, and it has been able to retrieve information from the database only when necessary. Don't forget that our ChatBot has memory.\n",
    "\n",
    "All of this in just a few lines of code!\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Ykg5TYA033yR"
   },
   "source": [
    "---"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "include_colab_link": true,
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "name": "python3"
  },
  "language_info": {
   "name": "python",
   "version": "3.9.12"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "00fe0639db3e4cceab51b66bff5badb6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_70771d3007f84b708f2b6c606191544e",
      "placeholder": "​",
      "style": "IPY_MODEL_c892e726805a42339efa33697bc5bd7c",
      "value": " 16407/16407 [00:01&lt;00:00, 13403.29 examples/s]"
     }
    },
    "07ee263153a24adaa68cd214eadf6beb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_4e2adc0ebac2499caede53f18a089e8d",
      "max": 233,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_a253d1e721784478b44bc9591e91edc3",
      "value": 233
     }
    },
    "0b99c723f1c144ef98d7d00161cc6b14": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "0e892018d49b4e18a5474abe09be2e62": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_a419f5b825064c499d4f48866b6d7a74",
       "IPY_MODEL_07ee263153a24adaa68cd214eadf6beb",
       "IPY_MODEL_e83f5646ee18468fb8cfaac3049500e2"
      ],
      "layout": "IPY_MODEL_b9f054b48512485cb2a599b9ef8a6e4c"
     }
    },
    "16c884025d5446be9520be255057e9ba": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "16ecb9b094604e18ae12485ab3051c86": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "1b2b2dd98a694302bbabae7c2cc806d0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "1e63095f73304dd99fc3abdf1c783df6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_7a833fd4eab84e78b422954197b11e67",
       "IPY_MODEL_ec02b4f54c4e4102a9580492308e6adf",
       "IPY_MODEL_22ec15c6ee5a48cb9cbaacee3418a02a"
      ],
      "layout": "IPY_MODEL_48897a06b5034af1bb4d6285e44dc3cc"
     }
    },
    "22ec15c6ee5a48cb9cbaacee3418a02a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_3cd31eee5ddb48c8b877fbed00b3a59f",
      "placeholder": "​",
      "style": "IPY_MODEL_6a0123f3d86f49be929bee74324606b3",
      "value": " 22.5M/22.5M [00:00&lt;00:00, 30.1MB/s]"
     }
    },
    "325a63fbc01d4eca8b7d244d73ad6781": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "3be999c8901f48e29e1048b287dc47a6": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "3cd31eee5ddb48c8b877fbed00b3a59f": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "428db91b6aad45cbb45448592d182dcd": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "44b02469b2e14793a3b04a601a98f15b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "48897a06b5034af1bb4d6285e44dc3cc": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "4e2adc0ebac2499caede53f18a089e8d": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6a0123f3d86f49be929bee74324606b3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "70771d3007f84b708f2b6c606191544e": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "7a833fd4eab84e78b422954197b11e67": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_16ecb9b094604e18ae12485ab3051c86",
      "placeholder": "​",
      "style": "IPY_MODEL_1b2b2dd98a694302bbabae7c2cc806d0",
      "value": "medDataset_processed.csv: 100%"
     }
    },
    "87c2e9430afb4aba8c85ea659aad7b7d": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "88552f9ee089447b9d10a9fedd31dc34": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "89b75ba9601b47eeaf93bd770a1d1fb3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_3be999c8901f48e29e1048b287dc47a6",
      "placeholder": "​",
      "style": "IPY_MODEL_325a63fbc01d4eca8b7d244d73ad6781",
      "value": "Generating train split: 100%"
     }
    },
    "8b0b16feb4374555b9c447b8f7c925cc": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_89b75ba9601b47eeaf93bd770a1d1fb3",
       "IPY_MODEL_a69fb7e458f1411696999a4ab8422aea",
       "IPY_MODEL_00fe0639db3e4cceab51b66bff5badb6"
      ],
      "layout": "IPY_MODEL_44b02469b2e14793a3b04a601a98f15b"
     }
    },
    "a253d1e721784478b44bc9591e91edc3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "a419f5b825064c499d4f48866b6d7a74": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_88552f9ee089447b9d10a9fedd31dc34",
      "placeholder": "​",
      "style": "IPY_MODEL_c056ba41424c49d9beb4e728729be017",
      "value": "README.md: 100%"
     }
    },
    "a69fb7e458f1411696999a4ab8422aea": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_16c884025d5446be9520be255057e9ba",
      "max": 16407,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_e732a5712cf846248e3383865b46c44c",
      "value": 16407
     }
    },
    "b9f054b48512485cb2a599b9ef8a6e4c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c056ba41424c49d9beb4e728729be017": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "c892e726805a42339efa33697bc5bd7c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "e732a5712cf846248e3383865b46c44c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "e83f5646ee18468fb8cfaac3049500e2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_87c2e9430afb4aba8c85ea659aad7b7d",
      "placeholder": "​",
      "style": "IPY_MODEL_0b99c723f1c144ef98d7d00161cc6b14",
      "value": " 233/233 [00:00&lt;00:00, 2.84kB/s]"
     }
    },
    "ec02b4f54c4e4102a9580492308e6adf": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_428db91b6aad45cbb45448592d182dcd",
      "max": 22466890,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_f84a284faa8b405c958703f677987bfd",
      "value": 22466890
     }
    },
    "f84a284faa8b405c958703f677987bfd": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
